<?php
namespace Admin\Controller;
use Think\Controller;
//要使用公共模块里面的东西，必须要继承
class RuleController extends CommonController {

    /**
     * 规则列表
     *
     * @return void
     * @author
     **/
    public function lists(){

        // $list=$this->Model->order('id desc')->select();
        // $this->assign('list',$list);
        // $this->display();

         //实现联表查询，将所属父级层级的name显示在权限列表中
         $count=$this->Model->relation(true)->count();//查询满足要求的总记录数

        $Page=new \Think\Page($count,10);//实例化分页类,传入总记录数和每页显示的记录数(1)

        //调用Think/page文件的定制分页链接设置方法（public function setConfig($name,$value)）修改上下页显示的效果
        //或者直接在Think/page文件的分页显示定制（ private $config）里面进行设置
        $Page->setConfig('prev','上一页');//上一页
        $Page->setConfig('last','尾页');//尾页

        $show=$Page->show();// 输出分页显示
        $list = $this->Model->relation(true)->order('id desc')->limit($Page->firstRow.','.$Page->listRows)->select();
        $this->assign('list',$list);// 赋值数据集
        $this->assign('page',$show);// 赋值分页输出

        //查询

        $this->display(); // 输出模板

    }

    /**
     * 规则添加
     *
     * @return void
     * @author
     **/
    function add()
    {
        if (IS_POST) {

            // print_r(I('post.'));die;
            $id=$this->Model->add(I('post.'));
            // echo $this->Model->getLastSql();die;//输出sql语句
            if ($id>0) {
                $this->success('权限添加成功',U('Admin/rule/lists'),2);die;
            }else {
               $this->error('权限添加失败','',3);die;
            }
        }
        /*查询所有顶级导航模块:在公共部分有公共的代码，直接用top_nav对象即可*/

        $this->display();
    }


    /**
     * 删除权限信息
     *
     * @return void
     * @author
     **/
    function del()
    {
        $id=I('get.id');
        $row=$this->Model->where("id=$id")->delete();

         if ($id>0) {
           $this->success('权限删除成功！','',1);die;
        }else{
             $this->error('权限删除失败！','',2);die;
        }
        $this->display();

    }




    /**
     * 编辑权限
     *
     * @return void
     * @author
     **/
    function edit()
    {
        //查询数据，将其绑定到页面显示
        $data=$this->Model->getByid(I('get.id'));
        $this->assign('data',$data);

        if (IS_POST) {
            $id=I('get.id');
            $row=$this->Model->where("id=$id")->save($data);
            echo $this->Model->getLastSql();die;

            if ($row>0) {
                $this->success('权限修改成功',U('Admin/rule/lists'),1);die;
            }else{
                $this->error('权限修改失败','',2);die;
            }
        }

        $this->display();
    }


    /**
     * Excel导出权限数据
     *
     * 首先需要将PHPExcel文件夹（插件）拷贝到Vendor下
     *
     * @return void
     * @author
     **/
    function to_out()
    {
        //先查询需要导出的数据
        $list=$this->Model->select();

        //引入Excel第三方类库,PHPExcel文件下的PHPExcel文件
        Vendor('PHPExcel.PHPExcel');

        $phpexcel=new \PHPExcel;///实例化
        // var_dump($phpexcel);die;

        //标题头
        $phpexcel->getActiveSheet()->setCellValue('A1','规则');
        $phpexcel->getActiveSheet()->setCellValue('B1','名称');
        $phpexcel->getActiveSheet()->setCellValue('C1','类型');
        $phpexcel->getActiveSheet()->setCellValue('D1','显示区域');
        $phpexcel->getActiveSheet()->setCellValue('E1','状态');
        $phpexcel->getActiveSheet()->setCellValue('F1','规则附件条件');
        $phpexcel->getActiveSheet()->setCellValue('G1','是否显示');
        $phpexcel->getActiveSheet()->setCellValue('H1','导航所属模块');
        $phpexcel->getActiveSheet()->setCellValue('I1','位置');
        $phpexcel->getActiveSheet()->setCellValue('J1','父级id');
        $phpexcel->getActiveSheet()->setCellValue('K1','图标');

        //通过循环语句将查询的数据逐一的写入到Excel表格的单元格中
        foreach ($list as $key => $v) {

            $key+=2;

            //通过$phpexcel对象访问getActiveSheet()方法，再访问setCellValue()方法
            $phpexcel->getActiveSheet()->setCellValue('A'.$key,$v['name']);
            $phpexcel->getActiveSheet()->setCellValue('B'.$key,$v['title']);
            $phpexcel->getActiveSheet()->setCellValue('C'.$key,$v['type']);
            $phpexcel->getActiveSheet()->setCellValue('D'.$key,$v['is_home']);
            $phpexcel->getActiveSheet()->setCellValue('E'.$key,$v['status']);
            $phpexcel->getActiveSheet()->setCellValue('F'.$key,$v['condition']);
            $phpexcel->getActiveSheet()->setCellValue('G'.$key,$v['is_show']);
            $phpexcel->getActiveSheet()->setCellValue('H'.$key,$v['is_show_home']);
            $phpexcel->getActiveSheet()->setCellValue('I'.$key,$v['point']);
            $phpexcel->getActiveSheet()->setCellValue('J'.$key,$v['pid']);
            $phpexcel->getActiveSheet()->setCellValue('K'.$key,$v['icon']);
        }

        $phpexcel->createSheet();//创建excel节点
        //创建Excel文件类型 2007
        //通过实例化工厂类PHPExcel_IOFactory输出IO。把创建的excel节点写入
        //PHPExcel_IOFactory是静态类方法              节点          类型
        $write =\PHPExcel_IOFactory::createWriter($phpexcel,'Excel2007');
        // var_dump($write);die;

        //以下载文件的形式输出保存
        header('Content-Type: application/vnd.ms-excel; charset=utf-8');
        header('Content-Disposition: attachment;filename=权限列表.xls');
        header('Cache-Control: max-age=0');


        $write->save('php://output');//输出保存方法
    }

}